MySQL FOREIGN KEY Constraint

সারণীগুলির মধ্যে লিঙ্কগুলিকে ধ্বংস করতে পারে এমন ক্রিয়াগুলি প্রতিরোধ করতে MySQL-এ FOREIGN KEY নিয়ন্ত্রণ কীভাবে ব্যবহার করবেন তা শিখুন

মাইএসকিউএল ফরেন কী সীমাবদ্ধতা

FOREIGN KEY সীমাবদ্ধতাটি এমন ক্রিয়াকলাপ প্রতিরোধ করতে ব্যবহৃত হয় যা টেবিলের মধ্যে লিঙ্কগুলিকে ধ্বংস করতে পারে।

একটি বিদেশী কী হল একটি টেবিলের একটি ক্ষেত্র (বা ক্ষেত্রগুলির সেট) যা অন্য টেবিলের একটি প্রাথমিক কীকে বোঝায়।

বিদেশী কী যুক্ত টেবিলকে চাইল্ড টেবিল এবং প্রাথমিক কী যুক্ত টেবিলকে রেফারেন্সড বা প্যারেন্ট টেবিল বলা হয়।

নিম্নলিখিত দুটি টেবিল দেখুন:

ব্যক্তিদের টেবিল

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

অর্ডার টেবিল

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

মনে রাখবেন যে "অর্ডার" টেবিলের "PersonID" কলামটি "ব্যক্তি" টেবিলের "PersonID" কলামকে উল্লেখ করে।

"ব্যক্তি" টেবিলের "PersonID" কলামটি "ব্যক্তি" টেবিলের প্রাথমিক কী।

"অর্ডার" টেবিলের "PersonID" কলামটি "অর্ডার" টেবিলের একটি বিদেশী কী।

💡দ্রষ্টব্য:

যেহেতু FOREIGN KEY সীমাবদ্ধতা অবশ্যই প্যারেন্ট টেবিলের মানগুলির মধ্যে একটি হতে হবে, এটি বিদেশী কী কলামে অবৈধ ডেটা সন্নিবেশ করাতে বাধা দেয়।

সারণী তৈরিতে বিদেশী চাবিকাঠি

নিম্নলিখিত SQL "PersonID" কলামে একটি বিদেশী কী তৈরি করে যখন "অর্ডার" টেবিল তৈরি হয়:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

একটি বিদেশী কী সীমাবদ্ধতার নামকরণের অনুমতি দিতে এবং একাধিক কলামে একটি বিদেশী কী সীমাবদ্ধতা সংজ্ঞায়িত করতে, নিম্নলিখিত SQL সিনট্যাক্স ব্যবহার করুন:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

পরিবর্তিত টেবিলে বিদেশী চাবি

টেবিলটি ইতিমধ্যে তৈরি হওয়ার পরে "PersonID" কলামে একটি বিদেশী কী সীমাবদ্ধতা তৈরি করতে নিম্নলিখিত SQL ব্যবহার করুন:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

একটি বিদেশী কী সীমাবদ্ধতার নামকরণের অনুমতি দিতে এবং একাধিক কলামে একটি বিদেশী কী সীমাবদ্ধতা সংজ্ঞায়িত করতে, নিম্নলিখিত SQL সিনট্যাক্স ব্যবহার করুন:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

বিদেশী কী সীমাবদ্ধতা অপসারণ করা হচ্ছে

একটি বিদেশী কী সীমাবদ্ধতা মুছে ফেলার জন্য, নিম্নলিখিত SQL ব্যবহার করুন:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

অনুশীলন করুন

বিদেশী কী সীমাবদ্ধতা ব্যবহার করা হয়:

একটি একক কলাম মান এবং অন্যান্য মানগুলির একটি পরিসরের মধ্যে তুলনা করতে
✗ ভুল! এটি চেক নিয়ন্ত্রণের উদ্দেশ্য
সারণীগুলির মধ্যে লিঙ্কগুলিকে ধ্বংস করতে পারে এমন ক্রিয়াগুলি প্রতিরোধ করতে
✓ ঠিক আছে! FOREIGN KEY সীমাবদ্ধতা টেবিলের মধ্যে সম্পর্ক বজায় রাখতে সাহায্য করে এবং সন্তানের টেবিলে প্যারেন্ট টেবিলে উপস্থিত নয় এমন মান সন্নিবেশ রোধ করে
একটি কলামে NULL মান থাকতে পারে না তা নিশ্চিত করতে
✗ ভুল! এটি NOT NULL সীমাবদ্ধতার উদ্দেশ্য
কলামের জন্য স্বয়ংক্রিয়ভাবে মান তৈরি করতে
✗ ভুল! এটি হল AUTO_INCREMENT বা ডিফল্ট মানগুলির উদ্দেশ্য৷